/**
 * @param {number} n - a positive integer
 * @return {number} - a positive integer
 */
/* 
要解决这个问题，我们需要将一个 32 位无符号整数的二进制位进行反转。例如，输入的二进制位为 00000010100101000001111010011100，反转后变为 00111001011110000010100101000000。

方法思路
初始化结果：创建一个初始值为 0 的变量 result，用于存储反转后的二进制位。
逐位处理：从输入整数的最低位开始，依次提取每一位，并将其添加到 result 的下一个位置。
位移操作：
对于输入 n，使用右移操作 n >>> 1 逐位提取最低位。
对于结果 result，使用左移操作 result << 1 为下一位腾出空间，并将提取的位添加到 result 中。
处理 32 位：确保处理完所有 32 位，即使高位为 0。
*/
var reverseBits = function (n) {
  let result = 0;

  // 处理 32 位中的每一位
  for (let i = 0; i < 32; i++) {
    // 提取 n 的最低位
    const bit = n & 1;

    // 将提取的位添加到 result 的下一个位置
    result = (result << 1) | bit;

    // 右移 n 以处理下一位
    n = n >>> 1;
  }

  return result >>> 0; // 确保结果被视为无符号整数
};